#include <bits/stdc++.h>
using namespace std;
/*

    思路对原数组进行数量统计 也就是我们选了一个数两边的数不能选了
    求这个数组最大值即可
*/
#include <bits/stdc++.h>
#include <cstdio>
#include <math.h>
using namespace std;
/*

    思路对原数组进行数量统计 也就是我们选了一个数两边的数不能选了
    求这个数组最大值即可
*/
const int N=1e4+10;
int m[N];
int f[N];//以i位置位结尾的不选最大分数
int g[N];//以i位置结尾选的最大分数
int tem=0;
int main()
{
    int n;
    cin >> n;
    vector<int> nums(n, 0);
    for (auto &ch : nums)
    {
        cin>>ch;
        m[ch]++;
        tem=max(tem,ch);
    }
    for(int i=1;i<=tem;i++)
    {
        f[i]=max(f[i-1],g[i-1]);
        g[i]=f[i-1]+i*m[i];
    }
    cout<<max(f[tem],g[tem]);

}
// 64 位输出请用 printf("%lld")